package cn.liuxiany.alibaba.generator;

import com.baomidou.mybatisplus.generator.config.converts.PostgreSqlTypeConvert;
import com.github.davidfantasy.mybatisplus.generatorui.GeneratorConfig;
import com.github.davidfantasy.mybatisplus.generatorui.MybatisPlusToolsApplication;
import com.github.davidfantasy.mybatisplus.generatorui.mbp.NameConverter;

/**
 * Hello world!
 */
public class GeneratorApplication {

    public static void main(String[] args) {

        GeneratorConfig config = GeneratorConfig.builder().jdbcUrl("jdbc:postgresql://localhost:5432/my-test-2")
                .userName("postgres")
                .password("123456")
                .typeConvert(new PostgreSqlTypeConvert())
                .driverClassName("org.postgresql.Driver")
                //数据库schema，MSSQL,PGSQL,ORACLE,DB2类型的数据库需要指定
                .schemaName("public")
                //数据库表前缀，生成entity名称时会去掉(v2.0.3新增)
                .tablePrefix("my_")
                //如果需要修改entity及其属性的命名规则，以及自定义各类生成文件的命名规则，可自定义一个NameConverter实例，覆盖相应的名称转换方法，详细可查看该接口的说明：
                .nameConverter(new NameConverter() {

                    // entityName是NameConverter.entityNameConvert处理表名后的返回结果，如有特别的需求可以自定义实现
                    @Override
                    public String entityNameConvert(String tableName, String tablePrefix) {
                        return NameConverter.super.entityNameConvert(tableName, tablePrefix);
                    }

                    @Override
                    public String mapperNameConvert(String entityName) {
                        return NameConverter.super.mapperNameConvert(entityName);
                    }

                    @Override
                    public String mapperXmlNameConvert(String entityName) {
                        return NameConverter.super.mapperXmlNameConvert(entityName);
                    }

                    @Override
                    public String serviceNameConvert(String entityName) {
                        return NameConverter.super.serviceNameConvert(entityName);
                    }

                    @Override
                    public String serviceImplNameConvert(String entityName) {
                        return NameConverter.super.serviceImplNameConvert(entityName);
                    }

                    @Override
                    public String controllerNameConvert(String entityName) {
                        return NameConverter.super.controllerNameConvert(entityName);
                    }
                })
                //所有生成的java文件的父包名，后续也可单独在界面上设置
                .basePackage("cn.liuxiany.alibaba.provider")
                .port(8068)
                .build();

        MybatisPlusToolsApplication.run(config);
    }
}
